#include <iostream>
#include <cmath>
using namespace std;


// определение функции, которая раскладывает любое целое цисло на массив чисел 
// входные параметры:
//   num - раскладываемое целое цисло
//   *digits - указатель на массив, где хранятся разложенные числа 
//   limit - по сколько чисел раскладываем
// выходные данные:
//   возвращается количество разложенных чисел
// ПРИМЕР: factor_digits(1234, arr, 1) => [1,2,3,4] 
// ПРИМЕР: factor_digits(1234, arr, 2) => [12,23,34] 
// ПРИМЕР: factor_digits(1234, arr, 3) => [123,234] 
int factor_digits(int num, int *digits, int limit)
{
    int digits_count = 0;

    // Последовательно извлекаем цифры числа, пока они есть
    while(num/(int)pow(10,limit-1) > 0)
    {
        // Копируем очередную цифру в массив
        digits[digits_count++] = num % (int)pow(10,limit);
        // Переходим к следующей цифре
        num /= 10;
    }
    
   return num/(int)pow(10,limit) ? 0 : digits_count;
}

// определение функции, которая проверяет, является ли число простым
// входные параметры: 
//   n - целое число, которое проверяется 
bool prime(int n) {
    if (n == 1) return false; // 1 - не является простым числом
    else
    {
        for(int i=2; i<=sqrt(n); i++)
		    if(n % i == 0)
			    return false;
    }
	return true;
}

// определение функции, которая возвращает макимальное целое цисло из массива
// входные параметры: 
//   arr[] - указатель на первый элемент массива 
//   count - размер массива
int maxint(int arr[], int count)
{
    int max = arr[0];
    for(int i=1; i < count; i++)
    {
        if(arr[i] > max)
            max = arr[i];
    }
    return max;  
}


int main()
{
    int n;
    int factored_number[20];    // Массив для хранения результата разложения чисел
    int primed_numbers[20];     // Массив для хранения простых чисел
    int factored_number_len;    // Количество разложенных чисел
    int i;
    int k = 0;
    
    cin >> n; // вводим число

    // Проверяем, что введено натуральное четырехзначное число
    if((int)n <= 999 && (int)n > 9999)
    {
        cout << 0 << endl;
    }
    
    // Проверяем, является ли вводимое число целиком простым, и если так, то оно и есть самое большое
    if(prime(n))
        cout << n << endl;
    else // иначе раскладываем число 
    {
        // Выполняем разложение по однозначным числам
        factored_number_len = factor_digits(n, factored_number, 1);
    
        // Проверяем каждое число на признак простого числа и если простое, то добавляем в массив простых чисел primed_numbers
        for (i = factored_number_len - 1; i >= 0; i--) {
            if(prime(factored_number[i]))
            {
                primed_numbers[k++] = factored_number[i];
            }
            
        }
    
        // Выполняем разложение по двузначным числам
        factored_number_len = factor_digits(n, factored_number, 2);
    
    
        // Проверяем каждое число на признак простого числа и если простое, то добавляем в массив простых чисел primed_numbers
        for (i = factored_number_len - 1; i >= 0; i--) {
            if(prime(factored_number[i]))
            {
                primed_numbers[k++] = factored_number[i];
            }
            
        }
        
        // Выполняем разложение по трехначным числам
        factored_number_len = factor_digits(n, factored_number, 3);
        
        // Проверяем каждое число на признак простого числа и если простое, то добавляем в массив простых чисел primed_numbers
        for (i = factored_number_len - 1; i >= 0; i--) {
            if(prime(factored_number[i]))
            {
                primed_numbers[k++] = factored_number[i];
            }
            
        }
        
        // возвращаем максимальное число в массиве простых чисел primed_numbers
        cout << maxint(primed_numbers, size(primed_numbers)) << endl;
        
    }

    return 0;
}